Push API

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die Push-API ermöglicht es Webanwendungen, Nachrichten von einem Server zu empfangen, unabhängig davon, ob sich die Web-App im Vordergrund befindet oder aktuell in einem Benutzeragenten geladen ist. Dadurch können Entwickler asynchrone Benachrichtigungen und Updates an Benutzer senden, die sich dafür entschieden haben, was zu einer besseren Interaktion mit zeitgerechten neuen Inhalten führt.

Push-Konzepte und Nutzung

Warnung: Beim Implementieren von PushManager-Abonnements ist es äußerst wichtig, dass Sie sich in Ihrer App gegen CSRF/XSRF-Probleme schützen. Siehe die folgenden Artikel für weitere Informationen:

Damit eine App Push-Nachrichten empfangen kann, muss ein aktiver Service Worker vorhanden sein. Wenn der Service Worker aktiv ist, kann er sich für Push-Benachrichtigungen mithilfe von PushManager.subscribe() anmelden.

Das resultierende PushSubscription enthält alle Informationen, die die Anwendung benötigt, um eine Push-Nachricht zu senden: einen Endpunkt und den Verschlüsselungsschlüssel, der zum Senden von Daten erforderlich ist.

Der Service Worker wird bei Bedarf gestartet, um eingehende Push-Nachrichten zu verarbeiten, die an den onpush-Ereignishandler geliefert werden. Dadurch können Apps reagieren, wenn Push-Nachrichten empfangen werden, beispielsweise indem eine Benachrichtigung angezeigt wird (mithilfe von ServiceWorkerRegistration.showNotification()).

Jedes Abonnement ist einzigartig für einen Service Worker. Der Endpunkt des Abonnements ist eine einzigartige Capability-URL: Das Wissen um den Endpunkt ist alles, was erforderlich ist, um eine Nachricht an Ihre Anwendung zu senden. Die Endpunkt-URL muss daher geheim gehalten werden, da sonst andere Anwendungen möglicherweise Push-Nachrichten an Ihre Anwendung senden können.

Das Aktivieren eines Service Workers zur Zustellung einer Push-Nachricht kann zu einem erhöhten Ressourcenverbrauch führen, insbesondere der Batterie. Verschiedene Browser haben unterschiedliche Methoden, um dies zu handhaben, es gibt derzeit keinen Standardmechanismus. Firefox erlaubt eine begrenzte Anzahl (Quote) von Push-Nachrichten an eine Anwendung, obwohl Push-Nachrichten, die Benachrichtigungen generieren, von diesem Limit ausgenommen sind. Das Limit wird jedes Mal erneuert, wenn die Seite besucht wird. In Chrome gibt es keine Limits.

Schnittstellen

PushEvent

Repräsentiert eine Push-Aktion, die an den globalen Bereich eines ServiceWorker gesendet wird. Es enthält Informationen, die von einer Anwendung an eine PushSubscription gesendet werden.

PushManager

Bietet eine Möglichkeit, Benachrichtigungen von Drittanbieter-Servern zu erhalten sowie URLs für Push-Benachrichtigungen anzufordern.

PushMessageData

Bietet Zugriff auf Push-Daten, die von einem Server gesendet werden, und enthält Methoden zur Manipulation der empfangenen Daten.

PushSubscription

Bietet einen URL-Endpunkt eines Abonnements und ermöglicht das Abbestellen von einem Push-Dienst.

PushSubscriptionOptions

Repräsentiert die mit dem Push-Abonnement verbundenen Optionen.

Ergänzungen im Service Worker

Die folgenden Ergänzungen zur Service Worker-API wurden in der Push-API-Spezifikation festgelegt, um einen Einstiegspunkt für die Verwendung von Push-Nachrichten bereitzustellen. Sie überwachen auch und reagieren auf Push- und Abonnementänderungsereignisse.

ServiceWorkerRegistration.pushManager Schreibgeschützt

Gibt eine Referenz zur PushManager-Schnittstelle zurück, um Push-Abonnements zu verwalten, einschließlich Anmelden, Abrufen eines aktiven Abonnements und Zugriff auf den Push-Berechtigungsstatus. Dies ist der Einstiegspunkt für die Nutzung von Push-Nachrichten.

onpush

Ein Ereignishandler, der jedes Mal ausgelöst wird, wenn ein push-Ereignis auftritt, das heißt, wann immer eine Server-Push-Nachricht empfangen wird.

onpushsubscriptionchange

Ein Ereignishandler, der ausgelöst wird, wenn ein pushsubscriptionchange-Ereignis auftritt; zum Beispiel, wenn ein Push-Abonnement ungültig geworden ist oder bald ungültig wird (z. B. wenn ein Push-Dienst ein Ablaufdatum festlegt).

Beispiele

Mozillas ServiceWorker Cookbook enthält viele nützliche Push-Beispiele.

Spezifikationen

Specification
Push API
# pushevent-interface
Push API
# pushmessagedata-interface

Browser-Kompatibilität

api.PushEvent

api.PushMessageData

Siehe auch